<?php

/**
 * Controlador de tipo de paraImprimirControler
 * 
 * @category   Controller
 * @package    modules__models
 * @author     Jose Miguel De Jesus <josejm07@hotmail.com>
 * @copyright  Todos los derechos reservados. Company24h. 2013.
 * 
 * @see        Administrador
 * @since      Version 1.0, revision 1.
 */
class paraImprimirControler extends Controller{
    
          private $_semanaArray;
	private $_idUsuario = false;

    
     public function __construct() {
        parent::Controller();
       
       $this->load->library(array('chgraficos','chcalendario'));
       $this->load->model(array('mservicios', 'usuarios', 'mmodeloservicios',
		                         'mtransaccionentrada', 'detallerentradas', 'mtipoentrada','mprovincia2',
		                         'mregistro', 'mmotivosalida', 'TransaccionHistorico', 'Merror','mscore',
                                             'registroeqsmodel','tiposeguimientomodel','mservicios','mjurisdiccion',
                                             'mresponsable','datoclientemodel','en_contacto_entrega_encuesta',
                                             'ec_encuesta','enhistorico','transaccionhistorico','tiposeguimientomodel',
                                                'mservicios','metapas','CompaniaHistorico','mcompania','mprocesos'));
        
                   /**
		 * Contiene el los dia de finalizado de cada semana,
		 * teniendo en cuenta que la semana 0 es la actual y
		 * disminuye segun pase la semana.
		 * @var array semanaArray
		 */
		
		if ($this->input->post('idusuario') == 0){
			
			  $this->_idUsuario = false;
			  
		}else{
			
		      $this->_idUsuario = $this->session->userdata('LOGGED_USR_ID');
		}
		
	
			if($this->input->post('idusuario')){
				
				 $this->_idUsuario = $this->input->post('idusuario');
				 
			}
			
		 	 $semana = $this->input->post('semanas') ? $this->input->post('semanas') : 9;
			      
			 $this->session->set_userdata('semAc',$semana);
		     
			 $this->_semanaArray = $this->chcalendario->semana($semana);
			
			 for ($i = $semana; $i >= 0; $i--){
		 		
		 	 $semana = date('W') - $i;
		 
		 	 if ($semana <= 0) {
		 			 $semana = 52 + $semana;
		 		 }
		  		 
			}
       
       
    }
    
         /**
	 * 
	 * Esta funcion index es la que me va a cargar la vista.
           * grafico de inbound 
	 */
	public function index()
	{
                  // Notificar solamente errores de ejecución
                    error_reporting(E_ERROR | E_WARNING | E_PARSE); 
                    
                    $fDesde = $this->input->post('fdesde')? $this->input->post('fdesde'): date('Y-m-d', strtotime('-1 week')); // resta 1 semana
                    $fHasta = $this->input->post('fhasta')? $this->input->post('fhasta'): date('Y-m-d');//fecha actual
                    $select = $this->input->post('select')? $this->input->post('select'): NULL;
                    
                    $fHasta = date("Y-m-d", strtotime("$fHasta +1 day"));
       
                    $records = $this->mtransaccionentrada->LoadGraficoKpis($select,0,0,NULL);
                    
                    $semafaro = array(
                        "verde" => 0,
                        "amarrillo" => 0,
                        "rojo" => 0
                    );
                    $cInbound60 = array();
                            
                     $idservicio1 = $this->mservicios->Loadservicios();
   
                    foreach ($idservicio1 as $key)
                        {
                             $servisio =  $key->getNombreServicio();
                             $cInbound60["$servisio"]=0;
                        }
 
                        $estatusBarra = array();
                        
                    foreach ($records as $key)
                        {
                        $cantidad =$this->CalcularDias3($key->getDateSistema());
                        
                         if ($key->getProximoContacto() == $key->getDateSolicitud()) {
		                 	$pociento = 100;
		                 }   
				else {
		         $hora = $this->CalcularDias($key->getDateSolicitud(),$key->getProximoContacto());
		         $hora2 = $this->CalcularDias(date("Y-m-d"),$key->getProximoContacto());
		         $porciento = $hora2/$hora;
		         $porciento = $porciento * 100;
		         $pociento =  100 - $porciento ; 
		         $pociento = intval($pociento);
				}
                         
                          if ($pociento < 1) {
		             	$porciento_neto = '0';
		             }
                         
                        if ($pociento < 85)
		         {
                                $estatusBarra[$key->getUsuario()]["verde"]++;
		            $semafaro["verde"]++;
		         } 
		        elseif ($pociento >= 100)
		       {
                              $estatusBarra[$key->getUsuario()]["rojo"]++;
		         	$semafaro["rojo"]++;
		       }       
		        else 
		        {
                               $estatusBarra[$key->getUsuario()]["amarrillo"]++;
		           $semafaro["amarrillo"]++;	
		        } 
                                 
                                 
                        if($cantidad >= 60)
                            {
                            
                            $idservicio = $this->mservicios->LoadServicioById($key->getIdServicios());
                            $nombreDelServicio = $idservicio->getNombreServicio();
                            
                            $cInbound60["$nombreDelServicio"]++;
                            }                        
                        }

                     $tabla = array();
                     
                     if($select){
                         
                       $tabla["select"] = $this->usuarios->LoadUsuarioById($select);
                         
                     }  else {
                     
                         $tabla["select"] = $select;
                     }
                     
                     
                     $tabla["fDesde"] = $fDesde;
                     $tabla["Fhasta"] = $fHasta;
                     
                     $this->load->view('googlechart',array('content_page' => 'paraImprimir', 'menutop' => 0,"cInbound60" => $cInbound60,"usuario" => $this->usuarios->LoadUsuarioByIdDep(2),"semafaro"=>$semafaro ,"tabla" => $tabla,"estatusBarra"=>$estatusBarra));
    
	}
          
           function CalcularDias3($fechapar)
	{
       
		$fechapar = substr($fechapar,0,10);
		
		$fechaact = date("Y-m-d");
		
		$fechapar_arr=explode('-',$fechapar);
	
		$fechapar_mk=mktime(0,0,0,$fechapar_arr[1],$fechapar_arr[2],$fechapar_arr[0]);
		$fechapar_mk=intval($fechapar_mk);

		$fechaact_arr=explode('-',$fechaact);
		$fechaact_mk=mktime(0,0,0,$fechaact_arr[1],$fechaact_arr[2],$fechaact_arr[0]);
		$fechaact_mk=intval($fechaact_mk);

		$segundos_diferencia =$fechaact_mk-$fechapar_mk;
		$dias_diferencia = $segundos_diferencia / (60 * 60 * 24);
		return  $dias_diferencia;

	}
          
           function CalcularDias($fechapar,$fechaact)
   {
       
		$fechapar = substr($fechapar,0,10);
		
		$fechaact = substr($fechaact,0,10);
		
		$fechapar_arr=explode('-',$fechapar);
			
		$fechapar_mk=mktime(0,0,0,$fechapar_arr[1],$fechapar_arr[2],$fechapar_arr[0]);
		$fechapar_mk=intval($fechapar_mk);

		$fechaact_arr=explode('-',$fechaact);
		$fechaact_mk=mktime(0,0,0,$fechaact_arr[1],$fechaact_arr[2],$fechaact_arr[0]);
		$fechaact_mk=intval($fechaact_mk);

		$segundos_diferencia =$fechaact_mk-$fechapar_mk;
		$dias_diferencia = $segundos_diferencia / (60 * 60 * 24);
		return  $dias_diferencia;

	}
          
           /**
     * Este es el metodo que le pasa los datos al grafico en la vista
     * Gracico de satisfaccion 
     */
     public function grafico()
     {
        $fdesde=  $this->input->post('fdesde') ?  $this->input->post('fdesde'): date('Y-m-d', strtotime('-1 week')); // resta 1 semana; 
        
        $fhasta = $this->input->post('fhasta') ?  $this->input->post('fhasta'): date('Y-m-d');//fecha actual
         
         
            $fecha = array(
          'fdesde' => $fdesde,
          'fhasta' => date("Y-m-d", strtotime("$fhasta +1 day")) 
         );
         
            $datos = array(   
             0 => 'Excelente',
             1 => 'Muy Bueno',
             2 => 'Bueno',
             3 => 'Regular',
             4 => 'Deficiente'  
         );
           
            $campos = array(
             0 => 'pt_satisfaccion',
             1 => 'pt_calidad',
             2 => 'pt_tiempo',
             3 => 'pt_cortesia',
          );      
          
      $resultado =  $this->ec_encuesta->load($campos,$datos,$fecha);
      
      $en_historico = $this->enhistorico->loadGraficoCompania($fdesde ,$fhasta);
          
      $ec_encuesta =  $this->ec_encuesta->encuestasDiaria($fdesde ,$fhasta);
      
      $graficoBarras = array(
       
          'en_historico' => $en_historico,
          'ec_encuesta' => $ec_encuesta );

         $this->load->view('googlechart',array('content_page' => 'paraImprimirSatisfaccion', 'menutop' => 0 , 'count' => $resultado,'graficoBarras' => $graficoBarras));
     }
     
     /**grafico de negocios**/
     public function negocios()
     {
         
              $fDesde = $this->input->post('fdesde')? $this->input->post('fdesde'): date('Y-m-d', strtotime('-1 week')); // resta 1 semana
              $fHasta = $this->input->post('fhasta')? $this->input->post('fhasta'): date('Y-m-d');//fecha actual
              $select = $this->input->post('select')? $this->input->post('select'): NULL;
              
              $fHasta = date("Y-m-d", strtotime("$fHasta +1 day"));
 
              $tabla = array(
                  "select" => $select,
                  "fDesde" => $fDesde,
                  "Fhasta" => $fHasta
              );
              
              if($select){
                         
                       $tabla["select"] = $this->usuarios->LoadUsuarioById($select);
                         
                     }  else {
                     
                         $tabla["select"] = $select;
                     }

                  $sc_companiaHistorico = $this->transaccionhistorico->LoadGraficoKpisHistorico($select,$fDesde,$fHasta);

                $servicio = $this->mservicios->Loadservicios();
                
                $ventas = array(
                    "propia"=>0,
                    "express"=>0,
                    "totalEpress" =>0,
                    "totalpropia" =>0,
                    "cantidad" => array()); 

                             foreach ($servicio as $servi):
                                 
                                 $nombreServicio = $servi->getNombreServicio();
                                 
                               $ventas["cantidad"]["$nombreServicio"]=0;
                               
                               endforeach;
                
                 
                 
                 foreach ($sc_companiaHistorico as $key)
                     {
                     if($key->getIdServicio() == 7)
                         {
                         if($key->getPrecioVenta() <= 37500)
                         {
                         $ventas["express"]++;
                         $ventas["totalEpress"]=$ventas["totalEpress"] + $key->getPrecioVenta();
                         }
                         
                         }elseif($key->getIdServicio() == 2)
                             {
                             
                         if($key->getPrecioVenta() <= 35000)
                         {
                         $ventas["propia"]++;
                         $ventas["totalpropia"]=$ventas["totalpropia"] + $key->getPrecioVenta();
                         }
                             }
                             
                              foreach ($servicio as $servi):
                 
                               if($servi->getIdServicio() == $key->getIdServicio())
                               {
                
                               $nombreServicio = $servi->getNombreServicio();
                               
                               $ventas["cantidad"]["$nombreServicio"]++;
                               
                               }
                               
                               endforeach;     
                            
                     }
                 
                     $grafico_tipo_servicio = $this->getVentasporServicios();
                     
               $this->load->view('googlechart',array('content_page' => 'paraImprimirNegocios', 'menutop' => 0,"usuario"=>  $this->usuarioVentas(), "ventas" => $ventas, "servios" => $servicio , "tabla" => $tabla, "grafico_tipo_servicio" => $grafico_tipo_servicio ));   
               }
     
          /**
           * 
           * @return array object
           */
          public function usuarioVentas()
          {
              return $this->usuarios->LoadUsuarioByIdDep(2);
          }
          
          
          public function getVentasporServicios()
	{
		
		/**
		 * Contiene un array con todos los registro..
		 * @var array $registro
		 */
		
		$registro = array();
		
		$strCat = "<categories>";
			
		     foreach($this->_semanaArray as $semana => $fecha){

		          $fechaI = $fecha[0];
		          $fechaF = $fecha[1];
		          
		     	  $semanaDetalle = explode("-", $semana);		
		     		
		     			
		          $strCat .= "<category label='".$semanaDetalle[0]."'/>";
		     	  	    
		           /**
		            * Paquetes Primium y Basico
		            * 
		            * */	
		          
		           $registroPropioPrimio = 0; 	           
		           $registros = array("FechaHistorico >=" =>$fechaI,		           					  					          	 
 	 					          	  "IdMotivoSalida"    => 6);	
		   
		           
		       	   if($semana != date('W')){
		           	
		           		$registros["FechaHistorico <="] = $fechaF;
		           }
		      
		           $idServicioPropia = array(2, 15);
		          
		           $registroPropioPrimio = $this->TransaccionHistorico->loadCantByIn($registros, $idServicioPropia, $this->_idUsuario);		           
		           $registro[$semana]["Propias"] = $registroPropioPrimio;
		          
		           /**
		            * Paquete Express
		            */
		           $registroExpress = 0;
		           $idServicioExpress = array(1, 16, 7);
		           $registroExpress = $this->TransaccionHistorico->loadCantByIn($registros, $idServicioExpress,$this->_idUsuario);		           
		           $registro[$semana]["Express"] = $registroExpress;
		           
		           
		           /**
		            * Paquetes Offshore
		            */		
		                      
		           $registroOffshore = 0;
		           $idServicioOffshore = array(3);
		           $registroOffshore = $this->TransaccionHistorico->loadCantByIn($registros, $idServicioOffshore, $this->_idUsuario);    																	    
		           		
		           $registro[$semana]["Offshore"] = $registroOffshore;
		            																	  

		           /**
		            * Todos los Servicios
		            */
		           
		           $todos = $this->TransaccionHistorico->loadCantByWhere($registros, $this->_idUsuario);
		    
		           $otrosServicios = $todos - $registroPropioPrimio - $registroExpress - $registroOffshore;
		           $registro[$semana]["Otros"] = $otrosServicios;

		       
		      	   continue; 
		      	      	
		           	      
				 }
		     
		 $strCat .= "</categories>";
		 
		 
		 $strPropias  = "<dataset seriesName='Propias'>";
		 $strExpress  = "<dataset seriesName='Express'>";
		 $strOffshore = "<dataset seriesName='Offshore'>";
		 $strServicio = "<dataset seriesName='Otros'>";
		 
		 
		 foreach ($registro as $semana){
		     $strPropias  .= "<set value='".$semana["Propias"]."' />";
		     $strExpress  .= "<set value='".$semana["Express"]."' />";
		     $strOffshore .= "<set value='".$semana["Offshore"]."' />";
		     $strServicio .= "<set value='".$semana["Otros"]."'/>";
		 }
		 
		 $strPropias  .= "</dataset>";
		 $strExpress  .= "</dataset>";
		 $strOffshore .= "</dataset>";
		 $strServicio .= "</dataset>";
		 
		 $strCat .= $strPropias;
		 $strCat .= $strExpress;
		 $strCat .= $strOffshore;
		 $strCat .= $strServicio;
		
			
				$strXML  = "<chart caption='Ventas por tipo de Servicio' showValues='0' plotFillAlpha='95' formatNumberScale='0'>";
			    $strXML .=$strCat;
				$strXML .= "</chart>";
				return $this->chgraficos->renderChartHTML(base_url()."public/swf_charts/StackedColumn3D.swf", "ChartId54", $strXML, "sACsa", 950,400, 0, 0);
				
				
     	}
          
          
               public function controlInterno()
               {
                   
                   // Notificar solamente errores de ejecución
                    error_reporting(E_ERROR | E_WARNING | E_PARSE);
                   
                 $this->reguladorDeEtapas();
              
              $semafaroFirma =array(
                  "verde" => 0,
                  "amarrillo" => 0,
                  "rojo" => 0
              );
              
               $semafaroDatos =array(
                  "verde" => 0,
                  "amarrillo" => 0,
                  "rojo" => 0
              );
                            
               $SC_COMPANIA_firma_todas = $this->mcompania->LoadCompaniasEtapas(10  , $select=NULL); 
               $SC_COMPANIA_datos_todas = $this->mcompania->LoadCompaniasEtapas(11  , $select=NULL);  
              
              if($SC_COMPANIA_firma_todas){
              
               foreach ($SC_COMPANIA_firma_todas as $key)
                {
             
                 $proceso = $this->mprocesos->LoadProcesosConteoCambioDeEtapasFirmaDatos($key->getIdCompania(),$key->getIdUltimaEtapa());
                 
                 $FechaprimerProceso = $this->chcalendario->calcularDias($proceso[0]->fecha);
                 
                 $proceso_neto = ($FechaprimerProceso/11)*100;
                 
                 if($proceso_neto >= 0 and $proceso_neto < 70 or $proceso_neto == 0 or $proceso_neto < 0)
                     {
                     
                     $semafaroFirma["verde"]++;
                     
                     }elseif ($proceso_neto >= 70 and $proceso_neto <85) {
                
                          $semafaroFirma["amarrillo"]++;
            }else{
                
                 $semafaroFirma["rojo"]++;
                
            }
                 
                } }
              
                /** Calculo del Semafaro  **/
                if($SC_COMPANIA_datos_todas){
                
                foreach ($SC_COMPANIA_datos_todas as $key)
                {
             
                 $proceso = $this->mprocesos->LoadProcesosConteoCambioDeEtapasFirmaDatos($key->getIdCompania(),$key->getIdUltimaEtapa());
                 
                 $FechaprimerProceso = $this->chcalendario->calcularDias($proceso[0]->fecha);
                 
                 $proceso_neto = ($FechaprimerProceso/11)*100;
                 
                 if($proceso_neto >= 0 and $proceso_neto < 70 or $proceso_neto == 0 or $proceso_neto < 0)
                     {
                     
                     $semafaroDatos["verde"]++;
                     
                     }elseif ($proceso_neto >= 70 and $proceso_neto <85) {
                
                          $semafaroDatos["amarrillo"]++;
            }else{
                 $semafaroDatos["rojo"]++;
                
            }
                 
                } }
              
                $seguimiento = array(
                 0 => array(),
                 1 => array(),
                 2 => array(),
                 3 => array(),
                 4 => array(),
                 5 => array(),
                 6 => array(),
                 7 => array(),
                 8 => array(),   
                 9 => array()
                   
                );
 
                $contador = 0;
                
                
               $fechaDesdeSemana = date("Y-m-d", strtotime("-70 day"));
                
                while($contador < 10)
                {
                    
                    $fechaFinal = date("Y-m-d", strtotime("$fechaDesdeSemana +6 day")); 
                    
                  $recorDatos = $this->mprocesos->buscarProcesoBarra(11, $fechaDesdeSemana ,$fechaFinal);
                  $recorFirma =  $this->mprocesos->buscarProcesoBarra(10, $fechaDesdeSemana ,$fechaFinal);
                   
                  if($recorDatos)
                   {
                      foreach ($recorDatos as $key)
                       {
                          
                          $seguimiento[$contador][$key->getIdTipoSeguimiento()]++;
                           
                       }
                   }
                   
                    if($recorFirma)
                   {
                      foreach ($recorFirma as $keys)
                       {
                          
                          $seguimiento[$contador][$keys->getIdTipoSeguimiento()]++;
                           
                       }
                   }
                   
                  
                    $fechaDesdeSemana = date("Y-m-d", strtotime("$fechaFinal +1 day"));
                    $contador++;
                }
                
               
                 
              
                
               $this->load->view('googlechart',array('content_page' => 'paraImprimirInterno', 'menutop' => 0,"usuario"=>  $this->usuarioVentas(),"semafaroFirma" => $semafaroFirma, "semafaroDatos" => $semafaroDatos, "seguimiento" => $seguimiento));  
     
               }
          
   
           public function reguladorDeEtapas()
           {
                $SC_COMPANIA = $this->mcompania->LoadCompaniasEtapas(); 
                
                foreach ($SC_COMPANIA as $key)
                    {
                    
                   $proceso = $this->mprocesos->buscarUltimoProceso($key->getIdCompania());
                 
                   if($proceso[0]->getIdEtapa() == $key->getIdUltimaEtapa())
                       {
                       
                       }  else {
                       
                           $this->mcompania->inserEtapaActual($key->getIdCompania(),$proceso[0]->getIdEtapa()); 
                       }
                    
                    }
                
           }
             
}

?>
